package org.jsola.hr.web;

import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import org.jsola.core.Page;
import org.jsola.core.Result;
import org.jsola.hr.dto.FacilitatorAddDTO;
import org.jsola.hr.dto.FacilitatorUpdateDTO;
import org.jsola.hr.query.FacilitatorQuery;
import org.jsola.hr.vo.FacilitatorListVO;
import org.jsola.hr.vo.FacilitatorVO;

import java.util.List;

/**
 * 卫人云-服务商
 *
 * @author zhr
 */
@Api(tags = "hr-卫人云-服务商")
public interface IFacilitatorControllerAPI {

    /**
     * 新增卫人云-服务商
     * @param facilitatorAddDTO 卫人云-服务商新增实体
     * @return 卫人云-服务商展示对象
     */
    @ApiOperation(value = "新增卫人云-服务商")
    @ApiImplicitParams({
            @ApiImplicitParam(name = "facilitatorAddDTO", dataType = "FacilitatorAddDTO", value = "新增卫人云-服务商", paramType = "body")
    })
    Result<FacilitatorVO> save(FacilitatorAddDTO facilitatorAddDTO);


    /**
     * 修改卫人云-服务商
     * @param facilitatorUpdateDTO 卫人云-服务商
     * @return 更新数量
     */
    @ApiOperation(value = "修改卫人云-服务商")
    @ApiImplicitParams({
            @ApiImplicitParam(name = "facilitatorUpdateDTO", dataType = "FacilitatorUpdateDTO", value = "修改卫人云-服务商", paramType = "body")
    })
    Result<Integer> update(FacilitatorUpdateDTO facilitatorUpdateDTO);




    /**
     * 删除单个卫人云-服务商，彻底删除
     * @param facilitatorId 卫人云-服务商id
     * @return 删除数量
     */
    @ApiOperation(value="删除单个卫人云-服务商，彻底删除")
    @ApiImplicitParams({
            @ApiImplicitParam(name = "facilitatorId", dataType = "String", value = "卫人云-服务商id", paramType = "path")
    })
    Result<Integer> delete(String facilitatorId);


    /**
     * 批量删除卫人云-服务商，彻底删除
     * @param facilitatorIds 卫人云-服务商id集合
     * @return 删除数量
     */
    @ApiOperation(value = "批量删除卫人云-服务商，彻底删除")
    @ApiImplicitParams({
            @ApiImplicitParam(name = "facilitatorIds", dataType = "String[]", value = "卫人云-服务商id数组", paramType = "body" ,allowMultiple = true)
    })
    Result<Integer> deleteBatch(String[] facilitatorIds);


    /**
     * 根据卫人云-服务商id查询卫人云-服务商详情
     * @param facilitatorId 卫人云-服务商id
     * @return 卫人云-服务商详情
     */
    @ApiOperation(value="根据卫人云-服务商id查询卫人云-服务商详情")
    @ApiImplicitParams({
            @ApiImplicitParam(name = "facilitatorId", dataType = "String", value = "卫人云-服务商id", paramType = "path")
    })
    Result<FacilitatorVO> findById(String facilitatorId);


    /**
     * 查询卫人云-服务商
     * @param facilitatorQuery 卫人云-服务商查询参数
     * @return page
     */
    @ApiOperation(value="查询卫人云-服务商")
    @ApiImplicitParams({
            @ApiImplicitParam(name = "facilitatorQuery", dataType = "FacilitatorQuery", value = "卫人云-服务商查询参数", paramType = "query")
    })
    Result<List<FacilitatorListVO>> listAll(FacilitatorQuery facilitatorQuery);


     /**
     * 分页查询卫人云-服务商
     * @param facilitatorQuery 卫人云-服务商查询参数
     * @return page
     */
    @ApiOperation(value="分页查询卫人云-服务商")
    @ApiImplicitParams({
            @ApiImplicitParam(name = "facilitatorQuery", dataType = "FacilitatorQuery", value = "卫人云-服务商查询参数", paramType = "query")
    })
    Result<Page<FacilitatorListVO>> page(FacilitatorQuery facilitatorQuery);


}

